package com.ssy.lingxi.marketing.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.marketing.api.model.request.GoodsSalesAddReq;
import com.ssy.lingxi.marketing.api.model.request.GoodsSalesItemActivityReq;
import com.ssy.lingxi.marketing.model.vo.activity.request.*;
import com.ssy.lingxi.marketing.model.vo.activity.response.*;
import com.ssy.lingxi.marketing.model.vo.common.request.CommonIdReq;

import java.util.List;

/**
 * 活动执行服务类
 * @author ds
 * @version 2.0.0
 * @date 2021/12/23
 */
public interface IActivityExecuteService {

    /**
     * 根据订单号与skuId查询参与的活动id
     * @param orderNo
     * @param skuId
     * @return
     */
    List<GoodsSalesItemActivityReq> getOrderJoinActivity(String orderNo, Long skuId);

    /**
     * 能力中心-查询商户活动执行列表
     * @param sysUser
     * @param pageReq
     * @return
     */
    Wrapper<PageData<MerchantActivityExecutePageResp>> pageMerchant(UserLoginCacheDTO sysUser, MerchantActivityCommonPageVO pageReq);

    /**
     * 能力中心-查询商户活动执行详情
     * @param sysUser
     * @param req
     * @return
     */
    Wrapper<MerchantActivityDetailResp> detailMerchant(UserLoginCacheDTO sysUser, CommonIdReq req);

    /**
     * 能力中心-查询商户活动执行详情-商品分页列表
     * @param sysUser
     * @param req
     * @return
     */
    Wrapper<PageData<ActivityExecuteGoodsPageResp>> pageByActivityGoodsMerchant(UserLoginCacheDTO sysUser, PfActivityGoodsPageReq req);

    /**
     * 能力中心-查询-平台活动执行列表
     * @param sysUser
     * @param pageReq
     * @return
     */
    Wrapper<PageData<PlatformActivityExecuteAbilityPageResp>> pagePlatformOfAbility(UserLoginCacheDTO sysUser, PfActivitySignUpPageReq pageReq);

    /**
     * 能力中心-查询-平台活动执行详情
     * @param sysUser
     * @param req
     * @return
     */
    Wrapper<PlatformActivityDetailResp> detailPlatformOfAbility(UserLoginCacheDTO sysUser, CommonIdReq req);

    /**
     * 能力中心-查询-平台活动执行详情-商品分页列表
     * @param sysUser
     * @param req
     * @return
     */
    Wrapper<PageData<ActivityExecuteGoodsPageResp>> pageByActivityGoodsPlatformOfAbility(UserLoginCacheDTO sysUser, PfActivityGoodsPageReq req);

    /**
     * 能力中心-查询-平台活动执行详情-商品分页列表-执行明细分页
     * @param sysUser
     * @param req
     * @return
     */
    Wrapper<PageData<ActivityExecuteDetailPageResp>> pageMerchantExecuteDetailOfAbility(UserLoginCacheDTO sysUser, ActivityExecutePageReq req);
    /**
     * 平台后台-查询-平台活动执行列表
     * @param sysUser
     * @param pageReq
     * @return
     */
    Wrapper<PageData<PlatformActivityExecutePageResp>> pagePlatform(UserLoginCacheDTO sysUser, PlatformActivityPageReq pageReq);

    /**
     * 平台后台-查询-平台活动执行详情
     * @param sysUser
     * @param req
     * @return
     */
    Wrapper<PlatformActivityDetailResp> detailPlatform(UserLoginCacheDTO sysUser, CommonIdReq req);

    /**
     * 平台后台-查询-平台活动执行详情-商品分页列表
     * @param sysUser
     * @param req
     * @return
     */
    Wrapper<PageData<ActivityExecuteGoodsPageResp>> pageByActivityGoodsPlatform(UserLoginCacheDTO sysUser, PfActivityGoodsPageReq req);

    /**
     * 更新活动商品销量、添加活动执行记录
     * @param req
     */
    void updateActivityGoodsSales(GoodsSalesAddReq req);
}
